package com.tjetc.utils;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.ResourceBundle;

/**
 * @Author: itda
 * @Date: 2024/5/10 22:22
 * @Description: Redis工具类
 */
public class RedisUtils {
    //Jedis连接池对象
    private static JedisPool jedisPool;

    private static String password;

    static {
        // 创建一个JedisPoolConfig对象，用于配置连接池
        JedisPoolConfig config = new JedisPoolConfig();
        ResourceBundle bundle = ResourceBundle.getBundle("jedis");

        String host = bundle.getString("host");
        int port = Integer.parseInt(bundle.getString("port"));
        int maxTotal = Integer.parseInt(bundle.getString("maxTotal"));
        int maxIdle = Integer.parseInt(bundle.getString("maxIdle"));
        int maxWaitMillis = Integer.parseInt(bundle.getString("maxWaitMillis"));
        password = bundle.getString("password");
        // 设置连接池中最大连接数
        config.setMaxTotal(maxTotal);
        // 设置连接池中最大空闲连接数
        config.setMaxIdle(maxIdle);
        // 设置获取连接的最大等待时间
        config.setMaxWaitMillis(maxWaitMillis);
        // 在获取连接时检查连接是否有效
        //config.setTestOnBorrow(true);
        // 使用配置好的连接池配置、主机地址和端口号创建Jedis连接池对象
        jedisPool = new JedisPool(config, host, port);
    }

    public static Jedis getJedis() { // 定义一个公共静态方法getJedis，用于从连接池中获取一个Jedis连接
        Jedis resource = jedisPool.getResource();
        resource.auth(password);
        return resource; // 返回从连接池中获取到的Jedis连接
    }

    public static void close(Jedis jedis) {
        if (jedis != null) {
            jedis.close(); // 关闭Jedis连接
        }
    }
}
